package com.tanhua.dubbo.api;

import com.tanhua.dubbo.enums.CommentType;
import com.tanhua.dubbo.pojo.Comment;
import com.tanhua.dubbo.pojo.Video;
import com.tanhua.dubbo.pojo.VideoComment;
import com.tanhua.dubbo.vo.PageInfo;

public interface VideoApi {

    /**
     * 保存小视频
     *
     * @param video
     * @return 保存成功后，返回视频id
     */
    String saveVideo(Video video);

    /**
     * 分页查询小视频列表，按照时间倒序排序，优先查询推荐结果
     *
     * @param userId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<Video> queryVideoList(Long userId, Integer page, Integer pageSize);

    /**
     * 根据id查询小视频
     *
     * @param videoId
     * @return
     */
    Video queryVideoById(String videoId);

    /**
     * 根据id查询评论
     *
     * @param commentId
     * @return
     */
    VideoComment queryCommentById(String commentId);

    /**
     * @Author 张园
     * 点赞
     *
     * @param userId
     * @param publishId
     * @param commentType
     * @Param content
     * @return
     */
    Boolean likeComment(Long userId, String publishId, CommentType commentType,String content);

    /**
     * @Author 张园
     * 点赞取消
     *
     * @param userId
     * @param publishId
     * @param commentType
     * @return
     */
    Boolean dislikeComment(Long userId, String publishId,CommentType commentType);

    /**
     * @Author 张园
     * 点赞数,评论数
     *
     * @param publishId
     * @param commentType
     * @return 返回点赞数
     */
    Long queryUserCommentCount(String publishId,CommentType commentType);

    /**
     * @Author 张园
     * 用户是否点赞
     *
     * @param publishId
     * @return
     */
    Boolean queryUserIsLike(Long userId, String publishId);


    /**
     * @Author 张园
     * 评论列表
     *
     * @param publishId
     * @param page
     * @param pageSize
     * @return
     */
    PageInfo<VideoComment> queryCommentsList(String publishId, Integer page, Integer pageSize);

    /**
     * @Author 张园
     * 提交评论
     *
     * @param videoId
     * @param content
     * @param userId
     * @return
     */
    Boolean publishComments(String videoId, String content,Long userId);

    /**
     * @Author 张园
     * 关注用户
     *
     * @param userId 当前用户
     * @param followUserId 关注的目标用户
     * @return
     */
    Boolean followUser(Long userId, Long followUserId);

    /**
     * @Author 张园
     * 取消关注用户
     *
     * @param userId 当前用户
     * @param followUserId 关注的目标用户
     * @return
     */
    Boolean disFollowUser(Long userId, Long followUserId);

    /**
     * @Author 张园
     * 查询用户是否关注某个用户
     *
     * @param userId 当前用户
     * @param followUserId 关注的目标用户
     * @return
     */
    Boolean isFollowUser(Long userId, Long followUserId);
}
